package PTA_JAVA.Collection7.demo3;

import java.util.*;

public class Main {
    public static void main(String[] args) {
        // 存入
        Scanner sc = new Scanner(System.in);
        Map<String, List<Integer>> map=new HashMap<>(); //创建一个map用来存储
        int line=0; //行数
        ArrayList arr=new ArrayList();  //arr存储句子
        String s =sc.nextLine();    //输入一行字符串
        while(!s.equals("!!!!!")){      //遇到"!!!!!"就结束
            arr.add(s);
            line++;     //每次行数都+1
            String[] words = s.split(" ");  //把字符串分割后装入words字符串数组
            for(String word:words){     //取出word
                if(map.containsKey(word)){  //map中含有word，不添加word，但要添加行数
                    if(!map.get(word).contains(line)){ //用word来获取所对应的值,如果不存在,则存入line(行数)
                        map.get(word).add(line);
                    }
                }else{  //map中不存在有word，添加word 和行数
                    List<Integer> l=new ArrayList<>();
                    l.add(line);
                    map.put(word,l);
                }
            }
            s =sc.nextLine();
        }
        // 输出
        List<Map.Entry<String, List<Integer>>> list =new ArrayList<Map.Entry<String, List<Integer>>>(map.entrySet());
        Collections.sort(list, new Comparator<Map.Entry<String, List<Integer>>>() {
            @Override
            public int compare(Map.Entry<String, List<Integer>> o1, Map.Entry<String, List<Integer>> o2) {
                return o1.getKey().compareTo(o2.getKey());
            }
        });
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        /*
         * 输入不定单词，分割后 依次查询map中是否存在
         * 不存在则输出”found 0 results“
         * 存在则：取每个单词的交集，如果有一个单词与其它没有交集，则输出“found 0 results”
         * 否则输出 所在交集行的句子
         */
        while(sc.hasNext()){
            String[] words=sc.nextLine().split(" ");
            List<Integer> l = new ArrayList<>(); //存交集的集合
            for(String word:words){
                if(map.containsKey(word)){
                    //存在,先把行存入l中
                    if(l.isEmpty()){
                        l=new ArrayList<>(map.get(word));
                    }else{
                        l.retainAll(map.get(word)); //存储交集
                        if(l.isEmpty()){
                            System.out.println("found 0 results");
                            break;
                        }
                    }
                }else{
                    System.out.println("found 0 results");
                    break;
                }
            }
            if(!l.isEmpty()){
                System.out.println(l.toString());
            }
            for(Integer i:l){
                System.out.println("line "+i+":"+arr.get(i-1));
            }
        }
    }
}

